//
//  NSDate+extention.swift
//  Weibo
//
//  Created by 唐润欣 on 16/6/20.
//  Copyright © 2016年 唐润欣. All rights reserved.
//

import Foundation

//NSDateFormatter干两件事，一是以某种特定的格式把时间（NSDate）转字符串（String），一个是把某种特定格式的字符串（String）转时间（NSDate）
let sz_dateFormatter = NSDateFormatter()

//calendar：1.判断当时时间昨天今天明天 2.获取某一个时间（年，月，日，时， 分， 秒，星期，时区）元素的值
let sz_calendar = NSCalendar.currentCalendar()

//NSDate: 把时间戳或者秒转成时间，或者把秒或者时间戳转成时间
extension NSDate {
    
    ///  把新浪的时间字符串: Mon Jun 13 09:06:53 +0800 2016，转成NSDate
    ///
    ///  - parameter sinaDateString: 新浪的时间字符串
    ///
    ///  - returns: NSDate
    class func getDateFromSina(sinaDateString: String) ->NSDate {
        
        sz_dateFormatter.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        sz_dateFormatter.locale = NSLocale(localeIdentifier: "en")
        
        return sz_dateFormatter.dateFromString(sinaDateString)!
    }
    
    //计算属性
    //extention里面不能添加存储属性和指定构造函数，但是可以添加计算属性和便利构造器
    var sina_description: String {
        
        if sz_calendar.isDateInToday(self) {
            
            let seconds = Int(NSDate().timeIntervalSinceDate(self))
            
            if seconds < 60 { return "刚刚" }
            if seconds < 3600 { return "\(seconds / 60)分钟前" }
            if seconds < 3600 * 24 { return "\(seconds / 3600)小时前" }
        }
        
            /// 要生成的时间字符串的格式
            var format = "HH:mm"
            
            if sz_calendar.isDateInYesterday(self) {
                
                format = "昨天" + format
                
            } else {
                
                let thisYear = sz_calendar.components(.Year, fromDate: NSDate()).year
                let year = sz_calendar.components(.Year, fromDate: self).year
                
                //说明是今年
                if thisYear == year {
                    
                    format = "MM-dd" + format
                    
                } else {
                    
                    format = "yyyy-MM-dd" + format
                }
            }
            
            sz_dateFormatter.dateFormat = format
            sz_dateFormatter.locale = NSLocale(localeIdentifier: "en")
            
            return sz_dateFormatter.stringFromDate(self)
    }
}
